﻿// 防止头文件重复包含的预编译指令
#ifndef CHANNELRECORDWIDGET_H
#define CHANNELRECORDWIDGET_H

// 包含 QWidget 类的头文件，QWidget 是所有用户界面对象的基类
#include <QWidget>
// 包含 QPaintEvent 类的头文件，用于处理绘制事件
#include <QPaintEvent>
// 包含 QPainter 类的头文件，用于进行 2D 绘制操作
#include <QPainter>

/**
 * @brief 通道记录显示部件类
 * 继承自 QWidget，用于在表格单元格中显示通道数据的可视化图表
 * 支持绘制折线图和散点图，根据给定的坐标范围自动缩放
 */
class ChannelRecordWidget : public QWidget
{
    // 启用 Qt 的元对象系统，支持信号和槽机制
    Q_OBJECT
public:
    /**
     * @brief 构造函数
     * @param minX X轴的最小值（数据范围）
     * @param maxX X轴的最大值（数据范围）
     * @param minY Y轴的最小值（数据范围）
     * @param maxY Y轴的最大值（数据范围）
     * @param parent 父窗口部件指针，默认为 nullptr
     * 初始化通道记录部件，设置数据坐标范围
     */
    explicit ChannelRecordWidget(int minX, int maxX, int minY, int maxY, QWidget *parent=0);
private:
    /**
     * @brief 重写绘制事件处理函数
     * @param event 绘制事件对象
     * 绘制通道数据的折线图和散点图，自动适应窗口大小
     */
    void paintEvent(QPaintEvent *event);
private:
    int m_minX;  ///< X轴的最小值，定义数据的水平范围起点
    int m_maxX;  ///< X轴的最大值，定义数据的水平范围终点
    int m_minY;  ///< Y轴的最小值，定义数据的垂直范围起点
    int m_maxY;  ///< Y轴的最大值，定义数据的垂直范围终点
};

// 结束头文件重复包含的预编译指令
#endif // CHANNELRECORDWIDGET_H
